#ifndef _Pin_h
#define _Pin_h
#include "LPC546XX_ctimer.h"

/*浮点数四舍五入为整数*/
#define ROUND_TO_INT16(x)   ((int16)(x)+0.5f)>=(x)? ((int16)(x)):((int16)(x)+1)
#define ROUND_TO_UINT16(x)   ((uint16)(x)+0.5f)>=(x)? ((uint16)(x)):((uint16)(x)+1)
#define ROUND_TO_INT8(x)   ((int8)(x)+0.5f)>=(x)? ((int8)(x)):((int8)(x)+1)

/*------------------电机模块-------------------------------------

****Moter_PEM1    Moter_PEM2 左电机  PWM1 子模块3 通道A+B
****Moter_PEM3    Moter_PEM3 右电机  PWM2 子模块3 通道A+B

-----------------------------------------------------------------*/

#define SERVO_CENTER 750 // 舵机直行中心值
#define SERVO_LIMITS 180 // 舵机行程限制值

#define SERVO_Kp 6     // 舵机比例
#define SERVO_Ki 0.005 // 舵机积分
#define SERVO_Kd 10    // 舵机微分

#define MOTOR_MAX_SPEED 1000 // 电机最大速度
#define MOTOR_LMT_SPEED 400  // 电机行程速度

#define MOTOR_Kp 30    // 电机比例
#define MOTOR_Ki 0     // 电机积分
#define MOTOR_Kd 0     // 电机微分

typedef CAR_DIR
{
    FRONT,
    BACK
}DIR;
typedef union PID_PWM_UNION{
    float   float32bits;
    uint8_t int8bits[4];
} PID_PWM_UNION;

extern float cur_error; // 当前误差
extern float pre_error; // 上次误差
extern float sum_error; // 累加误差

void PID_Controller(void); // PID控制函数



#if 0

#define Moter_PWM_L1     SCT0_OUT2_A19       
#define Moter_PWM_L2     SCT0_OUT3_A22      

#define Moter_PWM_R1    SCT0_OUT8_A29
#define Moter_PWM_R2    SCT0_OUT9_A30

#define WIRESSLESS_SERIAL_PORT_RX UART2_RX_A26 
#define WIRESSLESS_SERIAL_PORT_TX UART2_TX_A27 

#else

#define Moter_PWM_L1     SCT0_OUT5_A26    
#define Moter_PWM_L2     SCT0_OUT4_B3        

#define Moter_PWM_R1     SCT0_OUT6_A27  
#define Moter_PWM_R2     SCT0_OUT7_A28

/*-------------------------无线串口引脚--------------------------------*/
#define WIRESSLESS_SERIAL_PORT_RX UART0_RX_A24 
#define WIRESSLESS_SERIAL_PORT_TX UART0_TX_A25 

#endif

/*-------------------------舵机模块---------------------------------

****PWM4 子模块3 通道A - PWM4_MODULE3_CHA_C31
****

--------------------------------------------------------------------*/
#define Servo_PWM TIMER4_PWMCH0_A6




//鲮硝塑耖   1.5ms/20ms * PWM_DUTY_MAX（PWM_DUTY_MAX憷PWM钴?锟亡蒿?钴?） PWM_DUTY_MAX瞍fsl_pwm.h冼遂耖 蠃??50000
#define SMOTOR_CENTER   3450     //舵机中值
#define SMOTOR_RANGE    350	//舵机极限值

//定义ADC通道与引脚
#define POWER_ADC0_MOD  ADC_1       	//定义通道0 ADC模块号
#define POWER_ADC0_PIN  ADC1_CH3_B14	//定义通道0 ADC引脚
	
#define POWER_ADC1_MOD  ADC_1       	//定义通道1 ADC模块号
#define POWER_ADC1_PIN  ADC1_CH4_B15	//定义通道1 ADC引脚
														
#define POWER_ADC2_MOD  ADC_1       	//定义通道2 ADC模块号
#define POWER_ADC2_PIN  ADC1_CH5_B16	//定义通道2 ADC引脚

#define POWER_ADC3_MOD  ADC_1       	//定义通道3 ADC模块号
#define POWER_ADC3_PIN  ADC1_CH6_B17	//定义通道3 ADC引脚

#define POWER_ADC4_MOD  ADC_1       	//定义通道4 ADC模块号
#define POWER_ADC4_PIN  ADC1_CH7_B18 	//定义通道4 ADC引脚

#define POWER_ADC5_MOD  ADC_1       	//定义通道5 ADC模块号
#define POWER_ADC5_PIN  ADC1_CH8_B19 	//定义通道5 ADC引脚

#define POWER_ADC6_MOD  ADC_1       	//定义通道6 ADC模块号
#define POWER_ADC6_PIN  ADC1_CH9_B20 	//定义通道6 ADC引脚

#define POWER_ADC7_MOD  ADC_1       	//定义通道7 ADC模块号
#define POWER_ADC7_PIN  ADC1_CH10_B21 	//定义通道7 ADC引脚

#define POWER_ADC8_MOD  ADC_1       	//定义通道8 ADC模块号
#define POWER_ADC8_PIN  ADC1_CH11_B22	//定义通道8 ADC引脚

#define POWER_ADC9_MOD  ADC_1       	//定义通道9 ADC模块号
#define POWER_ADC9_PIN  ADC1_CH13_B24	//定义通道9 ADC引脚

#define POWER_ADC10_MOD  ADC_1       	//定义通道10 ADC模块号
#define POWER_ADC10_PIN  ADC1_CH14_B25	//定义通道10 ADC引脚

#define POWER_ADC11_MOD  ADC_1       	//定义通道11 ADC模块号
#define POWER_ADC11_PIN  ADC1_CH15_B26	//定义通道11 ADC引脚

#define POWER_ADC12_MOD  ADC_2       	//定义通道12 ADC模块号
#define POWER_ADC12_PIN  ADC2_CH0_B27	//定义通道12 ADC引脚

#define POWER_ADC13_MOD  ADC_2       	//定义通道13 ADC模块号
#define POWER_ADC13_PIN  ADC2_CH1_B28	//定义通道13 ADC引脚

#define POWER_ADC14_MOD  ADC_2       	//定义通道14 ADC模块号
#define POWER_ADC14_PIN  ADC2_CH2_B29	//定义通道14 ADC引脚

#define POWER_ADC15_MOD  ADC_2       	//定义通道15 ADC模块号
#define POWER_ADC15_PIN  ADC2_CH3_B30	//定义通道15 ADC引脚


/*--------------------------------------------------------

****定义按键引脚
****定义拨码开关引脚

--------------------------------------------------------------------*/
//定义按键引脚
#define KEY1    C3
#define KEY2    C4
//定义拨码开关引脚
#define SW1     C25
#define SW2     C26
#define SW3     C27
#define SW4     D27

#define BUZZER_PIN B7
#endif



